package com.gengzp.rpc.core;

import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * @ClassName RpcCacheCoreFunc
 * @Description rpc框架缓存操作核心方法接口
 * @Author gengzp
 * @Date 2025/8/22 21:43
 */
public interface RpcCacheCoreFunc {

    /**
     * 根据key获取缓存数据字符串
     *
     * @param key 键
     * @return 字符串类型值
     */
    String get(String key);

    /**
     * 保存字符串数据到缓存, 永不过期
     *
     * @param key   键
     * @param value 值
     */
    void set(String key, String value);

    /**
     * 保存字符串数据到缓存, 指定过期时间
     *
     * @param key      键
     * @param value    值
     * @param timeout  过期时间
     * @param timeUnit 时间单位
     */
    void set(String key, String value, Long timeout, TimeUnit timeUnit);

    /**
     * 删除缓存中的key
     *
     * @param key 键
     */
    void del(String key);

    /**
     * 根据前缀获取所有key
     *
     * @param prefix key的前缀
     * @param count  每次循环扫描的key数量
     * @return 所有的key
     */
    List<String> scanKeys(String prefix, int count);

    /**
     * 批量查询value
     *
     * @param keys 键集合
     * @return value集合
     */
    List<String> multiGet(List<String> keys);
}
